
\section{Herramientas}
\subsection{MAKE y MKNOD}

\noindent
\textbf{Indique que hace el comando make y mknod. Cómo se utilizan estos comandos en la instalación de MINIX y en la creación de un nuevo kernel. Para el caso del make muestre un archivo ejemplo y explique que realiza cada uno de los comandos internos del archivo ejemplo}

El comando make se usa para desarrollar programas grandes contenidos en múltiples archivos a compilar. Mantiene la información de dependencia de los archivos involucrados. Cuando se lo ejecuta, este hace la menor cantidad de recompilaciones posibles a fin de aplicar los últimos cambios llevados a cabo en el código fuente. Las dependencias deben estar indicadas en un archivo llamado makefile (o se debe indicar su ubicación mediante la opción $-f$). De esta manera, al (re)compilar el kernel de minix utilizaremos \emph{make} para recompilar sólo lo necesario.

El comando \textbf{make} tiene que tener básicamente la siguiente información: el archivo que tiene que generar, las dependencias del mismo y la instrucción que lo genera.

Ejemplo:

\begin{tabular}{|lll|}
\hline
d=/user/ast 	&  				& // d es una macro \\ 
program: 	& head.s tail.s 		& //programa depende de estos archivos \\ 
		& cc -o program head.s tail.s 	& // dice como compilar el programa \\ 
 		& echo "programa hecho" 	& //avisa que terminó \\ 
head.s: 	& \$d/def.h head.c		& // head.s depende de estos archivos\\ 
tail.s: 	& \$d/var.h tail.		&  // tail.s depende de estos archivos \\
\hline
\end{tabular}
\\

En MINIX, los dispositivos son \emph{vistos} como archivos, por esta razón mknod se utiliza para crear archivos especiales que hacen referencia a dispositivos o a servicios del sistema operativo. Mknod recibe tres parámetros: \emph{path}, \emph{mode} y \emph{dev}. El comando mknod crea un nuevo archivo cuyo nombre es \emph{path} y cuyos permisos están dados por \emph{mode}. El primer puntero del i-nodo es el señalado por \emph{dev} para especificar a que dispositivo se refiere este archivo.

\newpage
 
